﻿using System.Collections.Generic;
using Acaweb.Model.Entities.DatosCompuestos;

namespace Acaweb.Model.Entities
{
    public class Cursos
    {
        private CursoPk _CursoPk = new CursoPk();
        private int _Semestre;
        private int _Porcentaje1;
        private int _Porcentaje2;
        private int _Porcentaje3;
        private int _Porcentaje4;
        private int _Porcentaje5;
        private string _Profesor;
        private int _IntensidadHoraria;
        private string _TipoNota;
        private int _TopeMin;
        private int _TopeMax;
        private int _Creditos;
        private double _NotaMinAprovatoria;
        private double _NotaMinHabilitable;
        private double _NotaMinPreRequisito;
        private PlanesEstudios _PlanEstudio;
        private Materias _Materia;
        private ICollection<HorariosCursos> _ListaHorariosCursos;

        public virtual PlanesEstudios PlanEstudio
        {
            get { return _PlanEstudio; }
            set { _PlanEstudio = value; }
        }

        public virtual Materias Materia
        {
            get { return _Materia; }
            set { _Materia = value; }
        }

        public virtual CursoPk CursoPk
        {
            get { return _CursoPk; }
            set { _CursoPk = value; }
        }

        public virtual int Semestre
        {
            get { return _Semestre; }
            set { _Semestre = value; }
        }

        public virtual string Profesor
        {
            get { return _Profesor; }
            set { _Profesor = value; }
        }

        [NHibernate.Validator.Max(101)]
        [NHibernate.Validator.Min(0)]
        public virtual int Porcentaje1
        {
            get { return _Porcentaje1; }
            set { _Porcentaje1 = value; }
        }

        [NHibernate.Validator.Max(101)]
        [NHibernate.Validator.Min(0)]
        public virtual int Porcentaje2
        {
            get { return _Porcentaje2; }
            set { _Porcentaje2 = value; }
        }

        [NHibernate.Validator.Max(101)]
        [NHibernate.Validator.Min(0)]
        public virtual int Creditos
        {
            get { return _Creditos; }
            set { _Creditos = value; }
        }

        [NHibernate.Validator.Max(101)]
        [NHibernate.Validator.Min(0)]
        public virtual int Porcentaje3
        {
            get { return _Porcentaje3; }
            set { _Porcentaje3 = value; }
        }

        [NHibernate.Validator.Max(101)]
        [NHibernate.Validator.Min(0)]
        public virtual int Porcentaje4
        {
            get { return _Porcentaje4; }
            set { _Porcentaje4 = value; }
        }

        [NHibernate.Validator.Max(101)]
        [NHibernate.Validator.Min(0)]
        public virtual int Porcentaje5
        {
            get { return _Porcentaje5; }
            set { _Porcentaje5 = value; }
        }

        public virtual int IntensidadHoraria
        {
            get { return _IntensidadHoraria; }
            set { _IntensidadHoraria = value; }
        }

        public virtual string TipoNota
        {
            get { return _TipoNota; }
            set { _TipoNota = value; }
        }

        public virtual int TopeMin
        {
            get { return _TopeMin; }
            set { _TopeMin = value; }
        }

        public virtual int TopeMax
        {
            get { return _TopeMax; }
            set { _TopeMax = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double NotaMinAprovatoria
        {
            get { return _NotaMinAprovatoria; }
            set { _NotaMinAprovatoria = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double NotaMinHabilitable
        {
            get { return _NotaMinHabilitable; }
            set { _NotaMinHabilitable = value; }
        }

        [NHibernate.Validator.Min(0)]
        [NHibernate.Validator.Max(6)]
        public virtual double NotaMinPreRequisito
        {
            get { return _NotaMinPreRequisito; }
            set { _NotaMinPreRequisito = value; }
        }

        public virtual ICollection<HorariosCursos> ListaHorariosCursos
        {
            get { return _ListaHorariosCursos; }
            set { _ListaHorariosCursos = value; }
        }

        //public static bool operator ==(Cursos CursoA, Cursos CursoB)
        //{
        //    return CursoA.CursoPk == CursoB.CursoPk;
        //}
    }
}